package cn.xuqiudong.rpc.protocol;

import cn.xuqiudong.rpc.common.annotathion.XqdExtension;
import cn.xuqiudong.rpc.common.constants.ConfigKey;
import cn.xuqiudong.rpc.common.model.Invoker;

/**
 * 描述: 协议 ， 默认通过netty传输
 * @author Vic.xu
 * @date 2022-02-23 17:20
 */
@XqdExtension(value = "xqd", configKey = ConfigKey.PROTOCOL_CONFIG)
public interface Protocol {


    /**
     * 启动服务 只启动一次
     * @param port port
     * @exception Exception unknown host
     */
    void start(int port) throws Exception;

    /**
     * 客户端发送消息给服务端
     * @param invoker 包含 请求地址以及请求参数
     * @exception  Exception  throwable
     */
    Object send(Invoker invoker) throws Exception;

}
